#!/usr/bin/python

# coding: UTF-8

#Nota: no incluimos comas en los comentarios por motivos de compatibilidad
import urllib2
import os
import sys

#Mostramos la cabecera del programa
print 'Solicitud de busqueda en Google, by Julio Navarro'
print '*************************************************'

#Solicitamos la introduccion de un termino a buscar
busqueda = raw_input('Introduzca la palabra o palabras a buscar: ')

#Sustituimos los espacios para poder introducir el termino correctamente
#en el REST de Google
busqueda2 = busqueda.replace(' ','%20')

#Construimos la URL correspondiente
url = 'https://ajax.googleapis.com/ajax/services/search/web?v=1.0&q='+busqueda2

#Realizamos la solicitud y recibimos una respuesta
#Como web de peticion he puesto la direccion de mi blog
solicitud = urllib2.Request(
    url, None,{'Referer': 'http://discorporating.blogspot.com'})
respuesta = urllib2.urlopen(solicitud)

#Leemos los datos de la respuesta
salida = respuesta.read()

#Tomamos solo la parte en la que se encuentran los datos de la webs encontradas
salida = salida[salida.find('['):salida.find(']')]

#Dividimos la cadena para separar la informacion de cada web
salida = salida.split('},')

#Ahora tenemos que extraer del trozo de texto devuelto todos los enlaces
#y los titulos de las paginas
titulos = ''
enlaces = ''

for web in salida:
        #Dividimos la informacion de cada web en campos
        web = web.split('","')
        
        #Comprobamos que la cantidad de campos es correcta
        if len(web) < 8:
                        continue
        
        #Recuperamos la informacion de los enlaces y los titulos teniendo en
        #cuenta la posicion que ocupan en la cadena
        enlaces = enlaces + web[2][6:len(web[2])] + "#,#"
        titulos = titulos + web[6][20:len(web[6])] + "#,#"
        
#Dividimos las cadenas para convertirlas en arrays
enlaces = enlaces.split("#,#",len(enlaces)-2)
titulos = titulos.split("#,#",len(enlaces)-2)

#Construimos la cabecera de la pagina HTML a mostrar
html = '<html>\n<head>\n<title>Resultados para '+busqueda+'</title>\n</head>\n'
html = html + '<body>\n'
html = html + '<h1>Resultados de Google para "'+busqueda+'"</h1>\n'
html = html + '<ul>\n'
        
print "*************************************************"

#Adjuntamos al texto HTML cada enlace a las webs encontradas
#Ademas, mostramos tambien los resultados en la terminal
i = 0
while i < len(enlaces)-1:
        html = html + '<li><A HREF="'+enlaces[i]+'">'+titulos[i]+'</A>\n'
        print titulos[i]
        print enlaces[i]
        i += 1
        
html = html + '</ul>\n'
html = html + '</body>\n</html>'

#Guardamos el archivo para despues poder mostrarlo en Firefox
try:
        f = open("busqueda.html","w")
        f.write(html)
        f.close()
except:
        print "Error al guardar el fichero HTML"
        sys.exit()

#Abrimos Firefox con una llamada al sistema operativo
os.system("firefox busqueda.html &")
